package com.sunday.common.validation.custom;

import com.sunday.common.core.enums.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;


public class PermissionEnums {

    @Getter
    @AllArgsConstructor
    public enum CategoryEnum {

        /**
         * 后台管理
         * 10	  后台权限(web访问数据)
         */
        BACKGROUND_PERMISSIONS(10, "后台权限"),

        /**
         * 前台管理
         * 20. 路由权限(route permissions)
         * 21. 页面权限 - 细粒度管控(fine grit permissions)
         */
        ROUTE_PERMISSIONS(20, "路由权限"),
        FINE_GRIT_PERMISSIONS(21, "页面权限"),

        /**
         * 接口管理
         * 30. 接口权限(api 能力权限)
         */
        API_PERMISSIONS(30, "接口权限");

        @EnumValue
        private final int code;
        
        private final String desc;

    }


//    @Getter
//    @AllArgsConstructor
//    public enum CategoryEnum implements IEnum<Integer> {
//
//        /**
//         * 后台管理
//         * 10	  后台权限(web访问数据)
//         */
//        BACKGROUND_PERMISSIONS(10, "后台权限"),
//
//        /**
//         * 前台管理
//         * 20. 路由权限(route permissions)
//         * 21. 页面权限 - 细粒度管控(fine grit permissions)
//         */
//        ROUTE_PERMISSIONS(20, "路由权限"),
//        FINE_GRIT_PERMISSIONS(21, "页面权限"),
//
//        /**
//         * 接口管理
//         * 30. 接口权限(api 能力权限)
//         */
//        API_PERMISSIONS(30, "接口权限");
//
//
//        private final int code;
//
//        private final String desc;
//
//        @Override
//        public Integer getValue() {
//            return this.getCode();
//        }
//
//        @Override
//        public IEnum<Integer> choose(Integer value) {
//            return MAPPER.get(value);
//        }
//
//        private static final Map<Integer, CategoryEnum> MAPPER = new HashMap<>();
//
//        static {
//            for (final CategoryEnum categoryEnum : values()) {
//                MAPPER.put(categoryEnum.getCode(), categoryEnum);
//            }
//        }
//
//        public static CategoryEnum getEnum(final int value) {
//            return MAPPER.get(value);
//        }
//
//    }

}
